package edu.uoc.tds.common;

import edu.uoc.tds.bean.Asistente;
import edu.uoc.tds.bean.CentroDocente;
import edu.uoc.tds.bean.Contacto;
import edu.uoc.tds.bean.Evento;
import edu.uoc.tds.bean.InformeAsistentesEvento;
import edu.uoc.tds.bean.InformeEventosAsistente;
import edu.uoc.tds.bean.InformeIngresosTotales;
import edu.uoc.tds.bean.InformePorcentajeAsistenciaEvento;
import edu.uoc.tds.bean.Usuario;

import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.*;

public interface RemotoInterface extends Remote {

    public Vector<MostrarCombo> listaTipoEventos() throws RemoteException;

    public Vector<MostrarCombo> listaUniversidades() throws RemoteException;

    public Vector<MostrarCombo> listaPaises() throws RemoteException;

    public Vector<MostrarCombo> listaCentrosUniversidad(Integer idUniversidad) throws RemoteException;

    public Integer altaContacto(String domicilio, Integer cp, String localidad,
            Integer idPais, String email, String web, String telefono) throws RemoteException;

    public void altaCentro(String nombre, Integer idUniversidad, Integer idContacto) throws RemoteException;

    public CentroDocente getCentroDocente(Integer idCentroDocente) throws RemoteException;

    public void editarContacto(Contacto contactoEditar, String domicilio, Integer cp, String localidad,
            Integer idPais, String email, String web, String telefono) throws RemoteException;

    public void editarCentro(Integer idCentro, String nombre, Integer idUniversidad,
            Integer idContacto, Integer estado, String motivo, String fechaBaja) throws RemoteException;

    public List<CentroDocente> listaConsultaCentros(Integer idUniversidad, String nombre, Integer estado) throws RemoteException;

    public Integer insertarEvento(Evento evento) throws RemoteException;

    public void modificarEvento(Evento evento) throws RemoteException;

    public Evento getEvento(Integer idEvento) throws RemoteException;

    public List<Object[]> consultarEventos(Evento evento, boolean cancelados, boolean finalizados) throws RemoteException;

    public void modificarPrerequisitos(Evento evento) throws RemoteException;

    public Vector<MostrarCombo> listaTipoDoc() throws RemoteException;

    public List<Usuario> listaConsultaUsuarios(Integer idUniversidad, Integer idCentro, String nombre,
            String apellidos, Integer estado, Integer perfil, String desde, String hasta,
            Integer tipoDoc, String numDoc) throws Exception;

    public Vector<MostrarCombo> listaTipoEventosCelebrados(Integer idCentro) throws RemoteException;

    public List<InformePorcentajeAsistenciaEvento> listaInformePorcentajeAsistenciaEvento(Integer idUniversidad, Integer idCentro,
            Integer idTipoEvento, Date FechaInicio, Date FechaFin, Integer PorcentajeMin, Integer PorcentajeMax) throws RemoteException;

    public Object[][] getAsistentesEvento(Integer idEvento) throws RemoteException;

    public List<InformeIngresosTotales> listaInformeIngresosTotales(Integer idUniversidad, Integer idCentro,
            Integer idTipoEvento, Integer IngresosMin, Integer IngresosMax) throws RemoteException;

    public List<InformeAsistentesEvento> listaInformeAsistentesEvento(Integer idEvento, Boolean Asistentes, Boolean NoAsistentes) throws RemoteException;

    public Vector<MostrarCombo> listaEventosCelebrados(Integer IdUniversidad, Integer idCentro) throws RemoteException;

    public ArrayList<Object[]> getEventosIns(Date fecha, String tipoEvento) throws RemoteException;

    public ArrayList<Object[]> getDetallesEventoIns(int idEvento) throws RemoteException;

    public ArrayList<Object[]> getPrerrequisitosIns(int idEvento) throws RemoteException;

    public int getPrerrequisitosAsistidosIns(int id_evento, String idUsuario) throws RemoteException;

    public int getInscritosFecha(String userId, Date fecha) throws RemoteException;

    public void altaInscripcionIns(String userId, int idEvento, Date fecha) throws RemoteException;

    public void insertarAsistente(Asistente asistent) throws RemoteException;

    public Usuario getUsuarioLogin(String codigo, String contrasena) throws RemoteException;

    public void eliminarEvento(Integer idEvento) throws RemoteException;

    public Vector<MostrarCombo> listaUsuariosPorCentro(Integer IdUniversidad, Integer IdCentro) throws RemoteException;

    public List<InformeEventosAsistente> listaInformeEventosAsistente(String codigoAsistente, Integer idTipoEvento, Date FechaInicio, Date FechaFin, Boolean boolCerrado, Boolean boolSinCerrar) throws RemoteException;

    public ArrayList<Object[]> getDatosIns(String idUsuario, boolean valor) throws RemoteException;

    public ArrayList<Object[]> getHistoricoIns(String idUsuario, Date desde, Date hasta, Date actual, String tipo) throws RemoteException;

    public void setCheckin(String idUsuario, int id_evento) throws RemoteException;
}
